В больших приложениях поток логов может быть огромным — это перегружает хранилище и снижает производительность.
Полное отключение детальных логов — плохое решение, ведь важные данные могут потеряться. Лучше использовать выборочное логирование.
.NET теперь поддерживает несколько стратегий выборочного логирования:
• Случайная выборка по вероятности
• Выборка по трассировке
• Пользовательские сэмплеры для гибкой настройки
Пример простого пользовательского сэмплера для .NET, который ограничивает вывод логов до примерно 1 сообщения в секунду:
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) { var key = eventId.Id.ToString();
var now = DateTime.UtcNow;
var lastTime = _lastLoggedTimes.GetOrAdd(key, DateTime.MinValue);
if ((now - lastTime) >= _interval) { _lastLoggedTimes[key] = now;
var message = formatter(state, exception); Console.WriteLine($"[{now:O}] {logLevel}: {message}"); // Здесь вместо Console.WriteLine — вызов реального логгера } else { // Пропускаем лог, чтобы не создавать слишком много записей } }
Это может снизить затраты на хранение и обработку логов без потери ключевой информации.
В больших приложениях поток логов может быть огромным — это перегружает хранилище и снижает производительность.
Полное отключение детальных логов — плохое решение, ведь важные данные могут потеряться. Лучше использовать выборочное логирование.
.NET теперь поддерживает несколько стратегий выборочного логирования:
• Случайная выборка по вероятности
• Выборка по трассировке
• Пользовательские сэмплеры для гибкой настройки
Пример простого пользовательского сэмплера для .NET, который ограничивает вывод логов до примерно 1 сообщения в секунду:
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) { var key = eventId.Id.ToString();
var now = DateTime.UtcNow;
var lastTime = _lastLoggedTimes.GetOrAdd(key, DateTime.MinValue);
if ((now - lastTime) >= _interval) { _lastLoggedTimes[key] = now;
var message = formatter(state, exception); Console.WriteLine($"[{now:O}] {logLevel}: {message}"); // Здесь вместо Console.WriteLine — вызов реального логгера } else { // Пропускаем лог, чтобы не создавать слишком много записей } }
Это может снизить затраты на хранение и обработку логов без потери ключевой информации.
In recent times, Telegram has gained a lot of popularity because of the controversy over WhatsApp’s new privacy policy. In January 2021, Telegram was the most downloaded app worldwide and crossed 500 million monthly active users. And with so many active users on the app, people might get messages in bulk from a group or a channel that can be a little irritating. So to get rid of the same, you can mute groups, chats, and channels on Telegram just like WhatsApp. You can mute notifications for one hour, eight hours, or two days, or you can disable notifications forever.
For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.